/*
 * @Description:
 * @Autor: Zhongyu
 * @Date: 2021-03-16 14:23:39
 * @LastEditors: Zhongyu
 * @LastEditTime: 2021-04-14 10:19:45
 */

/**
 * 千分位分割
 * @param {*} value 传入的值
 * @param {*} decimalDigits 小数位数，默认0位
 * @returns 返回的值
 */
export function NumFormat(value, decimalDigits = 0) {
	/**
	 * 处理小数位置
	 * @param {*} part 小数的值
	 * @param {*} sunLen 需要小数的位数
	 * @returns 处理后的值
	 */
	function filling(part, sunLen) {
		// 将值转成字符串
		part = part.toString();
		if (part.length < sunLen) {
			// 当前小数的位数小于需要的位数，需要的小数位置减去当前小数位数在循环处理拼接在小数上
			for (let i = 0; i < sunLen - part.length; i++) {
				part += '0';
			}
		} else if (part.length > sunLen) {
			// 当前小数的位数大于需要的位数，直接截取到当前小数位
			part = part.substring(0, sunLen);
		}
		return part;
	}

	if (!value) {
		if (decimalDigits > 0) {
			return '0.00';
		}
		return '0';
	}
	//获取整数部分（这里是windy93的方法）
	let intPart = Number(value) - (Number(value) % 1);
	//将整数部分逢三一断
	let intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
	//预定义小数部分
	let floatPart = '';
	if (decimalDigits > 0) {
		floatPart = filling('', decimalDigits);
	}
	// 分割小数位和整数位
	let value2Array = value.toString().split('.');
	//等于2表示数据有小数位
	if (value2Array.length == 2) {
		floatPart = filling(value2Array[1].toString(), decimalDigits); //拿到小数部分
		return `${intPartFormat}.${floatPart}`;
	} else {
        if(floatPart.length > 0) {
            return `${intPartFormat}.${floatPart}`;
        }
		return `${intPartFormat}`;
	}
}

var en_mon_arr = [
	'Jan',
	'Feb',
	'Mar',
	'Apr',
	'May',
	'Jun',
	'Jul',
	'Aug',
	'Spt',
	'Oct',
	'Nov',
	'Dec',
]; //英文月份
ƒ

/**
 * 数据格式化
 * @param {*} date 时间或者时间字符串
 * @param {*} format 时间格式
 * @returns 格式化后的时间字符串
 */
export function DateFormat(date, format = 'yyyy-mm-dd hh:mm:ss') {
	let dt = date;
	if (!(date instanceof Date)) {
		dt = new Date(Date.parse(date.replace(/-/g, '/')));
	}
	let y = dt.getFullYear();
	//
	let m = (dt.getMonth() + 1).toString().padStart(2, '0');
	let d = dt
		.getDate()
		.toString()
		.padStart(2, '0');
	let h = dt
		.getHours()
		.toString()
		.padStart(2, '0');
	let mm = dt
		.getMinutes()
		.toString()
		.padStart(2, '0');
	let s = dt
		.getSeconds()
		.toString()
		.padStart(2, '0');
	if (format.toLocaleLowerCase() === 'yyyy-mm-dd' || format.toLocaleLowerCase() === '') {
		return `${y}-${m}-${d}`;
	} else if (format.toLocaleLowerCase() === 'yyyy/mm/dd') {
		return `${y}/${m}/${d}`;
	} else if (format.toLocaleLowerCase() === 'yyyy-mm-dd hh:mm:ss') {
		return `${y}-${m}-${d} ${h}:${mm}:${s}`;
	} else if (format.toLocaleLowerCase() === 'yyyy/mm/dd hh:mm:ss') {
		return `${y}/${m}/${d} ${h}:${mm}:${s}`;
	} else if (format.toLocaleLowerCase() === 'mm/dd') {
		return `${m}/${d}`;
	} else if (format.toLocaleLowerCase() === 'mm-dd') {
		return `${m}-${d}`;
	} else if (format.toLocaleLowerCase() === 'yyyy') {
		return `${y}`;
	} else if (format.toLocaleLowerCase() === 'dd ye') {
		return `${d} ${en_mon_arr[dt.getMonth()]}`;
	} else {
		return `输入的时间格式有误`;
	}
}
